//
//  SQLiteManager.h
//  ZhiHuDaily
//
//  Created by albert on 16/8/26.
//  Copyright © 2016年 albert. All rights reserved.
//  数据库管理

#import <Foundation/Foundation.h>
#import "SingleTonDefine.h"
#import "FMDB.h"

@interface SQLiteManager : NSObject

JKSingletonH(manager)

/** 数据库队列对象（使用数据库队列可以保证线程安全） */
@property (nonatomic, strong) FMDatabaseQueue *dbQueue;

/** 打开数据库 */
- (void)openDB:(NSString *)dbName;

/** 缓存完成的complete */
@property (nonatomic, copy) void(^cacheCompletedBlock)(NSString *progressText);

#pragma mark - ------------------增------------------
/** 缓存顶部topStories */
+ (void)cacheTopStories:(NSArray *)topStories date:(NSString *)date;

/** 批量缓存详情数据 */
+ (void)cacheDetailWithIDs:(NSArray *)IDs;

/** 缓存新闻详情数据到本地 */
+ (void)cacheDetail:(NSDictionary *)detailDict ID:(int)ID justCache:(BOOL)justCache;

/** 缓存首页数据 */
+ (void)cacheStoryLists:(NSArray *)stories date:(NSString *)date isTop:(BOOL)isTop isLatest:(BOOL)isLatest isMore:(BOOL)isMore;

#pragma mark - ------------------删------------------
/** 删除顶部topStories */
+ (void)deleteTopStories;

/** 清理缓存的数据 */
+ (void)clearData;

#pragma mark - ------------------改------------------
/** 更新文章为是否已赞状态 */
+ (void)updateIsLikedWithStoryID:(int)storyID isLiked:(BOOL)isLiked;

/** 更新文章为已读状态 */
+ (void)updateReadStatusWithStoryID:(int)storyID;

/** 更新所有文章为未收藏状态 */
+ (void)updateCollectionsCancelWithStoryIDs:(NSArray *)storyIDs;

/** 更新文章为收藏\未收藏状态 */
+ (BOOL)updateCollectedStatusWithStoryID:(int)storyID collected:(BOOL)collected;

#pragma mark - ------------------查------------------
/** 查询文章是否已赞 */
+ (BOOL)queryIsLikedWithStoryID:(int)storyID;

/** 获取收藏列表 */
+ (NSArray *)queryCollectedStoryList;

/** 获取首页topStories的storyID列表 */
+ (NSArray *)queryTopStoryIDs;

/** 获取首页最新数据 */
+ (NSDictionary *)queryLatestStoryList;

/** 指定日期的story列表 */
+ (NSDictionary *)queryStoryListWithDate:(int)date;

/** 从数据库获取详情数据 */
+ (NSDictionary *)queryStoryDetailWithID:(int)ID;

/** 查询文章是否已读 */
+ (BOOL)queryIsReadWithStoryID:(int)storyID;

/** 查询文章是否已收藏 */
+ (BOOL)queryIsCollectedWithStoryID:(int)storyID;
@end
